package com.healthcloud.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.healthcloud.annotation.Excel;
import com.healthcloud.utils.DateUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * 病人档案
 *
 * @author yucl
 * @email yucailong1111@126.com
 * @date 2017-09-04 14:03:05
 */

@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder(toBuilder = true)
@ApiModel(value = "病人档案", description = "病人档案")
public class PpPatientBaseEntity implements Serializable {

	private static final long serialVersionUID = 2354319719798881761L;

	@ApiModelProperty(value = "病人id", name = "病人id")
    private Integer id;


    @ApiModelProperty(value = "用户基本信息ID", name = "用户基本信息ID")
    private Long userid;

    @ApiModelProperty(value = "身份证号码", name = "身份证号码")
    @Excel(name = "身份证号码")
    private String idcard;

    @ApiModelProperty(value = "病人姓名", name = "病人姓名")
    @Excel(name="病人姓名")
    private String realname;

    @ApiModelProperty(value = "社保号码", name = "社保号码")
    private String socialinsurancenum;

    @ApiModelProperty(value = "医保号码", name = "医保号码")
    @Excel(name="医保号码")
    private String medicalinsurancenum;


    @ApiModelProperty(value = "就诊卡号", name = "就诊卡号")
    private String medicalcardnum;

    @ApiModelProperty(value = "性别", name = "性别")
    private Integer gender;

    @ApiModelProperty(value = "出生日期", name = "出生日期")
    private Date birthday;

    @ApiModelProperty(value = "工作单位", name = "工作单位")
    private String workcompany;

    @ApiModelProperty(value = "本人电话号码", name = "本人电话号码")
    @Excel(name="本人电话号码")
    private String phone;

    @ApiModelProperty(value = "联系人", name = "联系人")
    private String contacts;

    @ApiModelProperty(value = "联系人电话号码", name = "联系人电话号码")
    private String contactphone;
    @ApiModelProperty(value = "学历", name = "学历")

    private Integer degree;
    @ApiModelProperty(value = "血型", name = "血型")
    private Integer bloodtype;
    @ApiModelProperty(value = "户口性质", name = "户口性质")
    private Integer hukoutype;
    @ApiModelProperty(value = "婚姻状况", name = "婚姻状况")
    private Integer maritalstate;
    @ApiModelProperty(value = "rh 血型类型", name = "rh 血型类型")
    private Integer rhtype;
    @ApiModelProperty(value = "职业", name = "职业")
    private String career;
    @ApiModelProperty(value = "民族", name = "民族")
    private Integer nationality;
    @ApiModelProperty(value = "援助类型", name = "援助类型")
    private Integer aidtype;
    @ApiModelProperty(value = "身高", name = "身高")
    @Excel(name = "身高")
    private Double height;
    @ApiModelProperty(value = "体重", name = "体重")
    @Excel(name = "体重")
    private Double weight;
    @ApiModelProperty(value = "国籍", name = "国籍")
    private Integer nation;
    @ApiModelProperty(value = "与户主关系", name = "与户主关系")
    private Integer relationship;
    @ApiModelProperty(value = "常住类型", name = "常住类型")
    private Integer permanenttype;
    @ApiModelProperty(value = "证件类型", name = "证件类型")
    private Integer cardkind;
    @ApiModelProperty(value = "电子邮件", name = "电子邮件")
    private String email;
    @ApiModelProperty(value = "邮政编码", name = "邮政编码")
    private String postcode;
    @ApiModelProperty(value = "居住地区编码", name = "居住地区编码")
    private Integer areacode;
    @ApiModelProperty(value = "家庭地址", name = "家庭地址")
    @Excel(name = "家庭地址")
    private String homeaddress;
    @ApiModelProperty(value = "管理单位", name = "管理单位")
    private String company;
    @ApiModelProperty(value = "用户头像", name = "用户头像")
    private String userimage;
    @ApiModelProperty(value = "户籍地址", name = "户籍地址")
    private String registeraddress;
    @ApiModelProperty(value = "负性事件", name = "负性事件")
    private String negativeevents;
    @ApiModelProperty(value = "负性事件其他", name = "负性事件其他")
    private String negativeeventsextra;
    @ApiModelProperty(value = "建档时间", name = "建档时间")
    private Date createdtime;
    @ApiModelProperty(value = "档案更新时间", name = "档案更新时间")
    private Date updatedtime;
    @ApiModelProperty(value = "关联到usr-family的id", name = "关联到usr-family的id")
    private Integer usrfid;
    @ApiModelProperty(value = "类型1=租赁插入", name = "类型1=租赁插入")
    private Integer type;
    @ApiModelProperty(value = "创建者", name = "创建者")
    private Long createId;
    @ApiModelProperty(value = "区分来源", name = "区分来源")
    private Integer sourceType;
    @ApiModelProperty(value = "状态0=申请，1=同意，2=用户取消，3=医生拒绝签约", name = "状态0=申请，1=同意，2=用户取消，3=医生拒绝签约")
    private Integer state;
    @ApiModelProperty(value = "建档医生id", name = "建档医生id")
    private Long doctorId;
    @ApiModelProperty(value = "建档医院id", name = "建档医院id")
    private Long hospitalId;
    @ApiModelProperty(value = "医生疾病分类，多个疾病之间用【,】分开；1=高血压人群  2=糖尿病人群", name = "医生疾病分类，多个疾病之间用【,】分开；1=高血压人群  2=糖尿病人群")
    @Excel(name = "医生疾病分类")
    private String diseasesType;
    @ApiModelProperty(value = "血压类型 1:1级 2:2级 3:3级", name = "血压类型 1:1级 2:2级 3:3级")
    private Integer bpType;
    @ApiModelProperty(value = "血糖类型 1:1类 2:2类 3:3类 4:4类", name = "血糖类型 1:1类 2:2类 3:3类 4:4类")
    private Integer bsType;

    @ApiModelProperty(value = "骨松类型：1-普通患者；2-高危患者；3-确诊患者", name = "骨松类型：1-普通患者；2-高危患者；3-确诊患者")
    @Excel(name = "骨松类型")
    private Integer blType;

    @ApiModelProperty(value = "高血压并发症", name = "高血压并发症")
    private String bpComplication;
    @ApiModelProperty(value = "糖尿病并发症", name = "糖尿病并发症")
    private String bsComplication;
    @ApiModelProperty(value = "是否吸烟 1:是 2:否", name = "是否吸烟 1:是 2:否")
    private Integer smoke;
    @ApiModelProperty(value = "是否饮酒 1:是 2:否", name = "是否饮酒 1:是 2:否")
    private Integer drink;
    @ApiModelProperty(value = "是否为体力劳动者 1:是 2:否", name = "是否为体力劳动者 1:是 2:否")
    private Integer physical;

    @ApiModelProperty(value = "疾病诊断", name = "疾病诊断")
    @Excel(name = "疾病诊断")
    private String diseaseDiagnosis;

    @ApiModelProperty(value = "疼痛程度", name = "疼痛程度")
    @Excel(name = "疼痛程度")
    private Integer painLevel;

    @ApiModelProperty(value = "腰围", name = "腰围")
    @Excel(name="腰围")
    private String waist;
    @ApiModelProperty(value = "1:需要同步 2:已同步 -1:同步失败", name = "1:需要同步 2:已同步 -1:同步失败")
    private String synchronization;
    @ApiModelProperty(value = "上次同步时间", name = "上次同步时间")
    private String synchronizationTime;
    @ApiModelProperty(value = "血脂分层/等级", name = "血脂分层/等级")
    private String bfGrade;
    @DateTimeFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    @JSONField(format = DateUtils.DATE_TIME_PATTERN)
    @ApiModelProperty(value = "血脂确诊日期", name = "血脂确诊日期")
    private Date bfDiagnosisTime;
    @ApiModelProperty(value = "编号", name = "编号")
    private String serialNumber;
    @ApiModelProperty(value = "备注", name = "备注")
    @Excel(name = "备注")
    private String remark;
    @ApiModelProperty(value = "特殊患者标记 1:是 2:否", name = "特殊患者标记 1:是 2:否")
    private Integer sign;
    @ApiModelProperty(value = "文化程度", name = "文化程度")
    private String education;
    @ApiModelProperty(value = "民族", name = "民族")
    private String clan;
    /*
    重复
     */
    @ApiModelProperty("建档医生")
    private String doctor;

    @ApiModelProperty("最高血压值（高压）（收缩压）")
    private String highestBpSystolic;
    @ApiModelProperty("最高血压值（低压）（舒张压）")
    private String highestBpDiastolic;
    @ApiModelProperty("最高血压值-测量地点类型（1-诊室；2-家庭自测）")
    private Integer bpTestPlace;

    @ApiModelProperty(value = "分级：1高危 2骨质疏松 3重度骨质疏松", name = "分级：高危 骨质疏松 重度骨质疏松")
    private Integer levelManagement;

}
